package com.elitel.frame.web.cfgdatalabel.service.impl;


import com.elitel.common.utils.UUIDUtil;
import com.elitel.frame.main.entity.dto.ServerQueryTypeDTO;
import com.elitel.frame.main.entity.dto.SysDataLabelDTO;
import com.elitel.frame.web.cfgdatalabel.dao.CfgDataLabelDao;
import com.elitel.frame.web.cfgdatalabel.entity.CfgDataLabel;
import com.elitel.frame.web.cfgdatalabel.service.CfgDataLabelService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

@Service
public class CfgDataLabelServiceImpl implements CfgDataLabelService {


    @Resource
    private CfgDataLabelDao cfgDataLabelDao;

    @Override
    public List<CfgDataLabel> getSysDataLabel(ServerQueryTypeDTO queryTypeDTO) {
        List<CfgDataLabel> cfgDataLabels = cfgDataLabelDao.getSysDataLabel(queryTypeDTO);
        return cfgDataLabels;
    }

    @Override
    public void saveSysDataLabel(SysDataLabelDTO sysDataLabelDTO) {
        this.checkCodeExist(sysDataLabelDTO.getId(), sysDataLabelDTO.getCode());
        CfgDataLabel cfgDataLabel = new CfgDataLabel();
        BeanUtils.copyProperties(sysDataLabelDTO, cfgDataLabel);
        cfgDataLabel.setId(UUIDUtil.randomUUID());
        cfgDataLabel.setDelFlag("0");
        cfgDataLabel.setCreatedTime(new Date());
        cfgDataLabel.setUpdatedTime(new Date());
        cfgDataLabelDao.insert(cfgDataLabel);
    }

    @Override
    public void updateSysDataLabel(SysDataLabelDTO sysDataLabelDTO) {
        this.checkCodeExist(sysDataLabelDTO.getId(), sysDataLabelDTO.getCode());
        CfgDataLabel cfgDataLabel = new CfgDataLabel();
        BeanUtils.copyProperties(sysDataLabelDTO, cfgDataLabel);
        cfgDataLabel.setUpdatedTime(new Date());
        cfgDataLabelDao.updateByPrimaryKeySelective(cfgDataLabel);
    }

    private void checkCodeExist(String id, String code) {
        List<CfgDataLabel> list = cfgDataLabelDao.selectNeIdEqCode(id, code);
        if (list != null && !list.isEmpty()) {
            throw new RuntimeException("分类编码已存在, 请重新填写! ");
        }
    }


    @Override
    public void delSysDataLabel(SysDataLabelDTO sysDataLabelDTO) {
        cfgDataLabelDao.deleteByPrimaryKey(sysDataLabelDTO.getId());
    }
}
